package collection;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 中间操作:
 * flatMap:扁平化操作，可以将多个Stream合流为一个Stream
 *         通常可以将一个集合中的元素拆分后再整合到同一个集合中
 *         或类似多维数组降维成一维数组
 *
 */
public class StreamDemo3 {
    public static void main(String[] args) {
        List<List<String>> list = new ArrayList<>();
        list.add(Arrays.asList(new String[]{"one","two","three"}));
        list.add(Arrays.asList(new String[]{"four","five","six"}));
        System.out.println(list);
        /*
            flatMap的作用是将当前Stream中每个元素变成一个流，并最终将这些流合并到同一个
            流中
         */
        List<String> list2
                = list.stream().flatMap(e->e.stream())//e是list中每个元素(一个List集合)
                  .collect(Collectors.toList());
        System.out.println(list2);


        List<String> list3 = new ArrayList<>();
        list3.add("jack");
        list3.add("rose");
        list3.add("marry");
        System.out.println(list3);
        /*
            需求:将集合中所有字符串的每个字符拆开，并将所有字符组成一个集合
            [j,a,c,k,r,o,s,e,...]
         */
        String[] array = "jack".split("");//将字符串按照""拆分
        System.out.println(Arrays.toString(array));
        Stream stream = Arrays.stream(array);//Arrays.stream()可以将数组转化为一个流
        //list3.stream()->["jack","rose","marry"]
        List<String> list4 = list3.stream()
                            .flatMap(e->Arrays.stream(e.split("")))
                            .collect(Collectors.toList());
        System.out.println(list4);

    }
}
